package com.hc.conferencecheck.mapper;

import com.hc.conferencecheck.entity.Conference;
import com.hc.conferencecheck.entity.ConferenceExample;

import java.util.List;
import java.util.Map;

import com.hc.conferencecheck.entity.entityDTO.ConferenceAppliedDTO;
import com.hc.conferencecheck.entity.entityDTO.ConferenceDTO;
import com.hc.conferencecheck.entity.entityDTO.ConferenceDetailDTO;
import com.hc.conferencecheck.entity.entityDTO.ConferenceDetailDTO02;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface ConferenceMapper {
    long countByExample(ConferenceExample example);

    int deleteByExample(ConferenceExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Conference record);

    int insertSelective(Conference record);

    List<Conference> selectByExample(ConferenceExample example);

    Conference selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Conference record, @Param("example") ConferenceExample example);

    int updateByExample(@Param("record") Conference record, @Param("example") ConferenceExample example);

    int updateByPrimaryKeySelective(Conference record);

    int updateByPrimaryKey(Conference record);

    /**
     * 查询当前用户的有效会议对象
     *
     * @param id
     * @return
     */
    List<ConferenceDTO> selectEffectiveConference(@Param("conventionerId") Integer id);

    /**
     * 查询当前用户可签到会议
     *
     * @param id
     * @return
     */
    List<ConferenceAppliedDTO> selectConferenceApplied(@Param("conventionerId") Integer id);

    /**
     * 查询当前用户所有已申请会议
     *
     * @param id
     * @return
     */
    List<ConferenceAppliedDTO> selectAllConferenceByConventionerId(@Param("conventionerId") Integer id);

    /**
     * 查询会议详情（用于后台管理页面）
     *
     * @param params
     * @return
     */
    List<ConferenceDetailDTO02> selectConferenceInfo(Map<String, Object> params);

    /**
     * 查询所有会议的未通过申请记录
     *
     * @param params
     * @return
     */
    List<ConferenceDetailDTO> selectAttendRecordNotApproved(Map<String, Object> params);

    /**
     * 根据用户id查询当前用户所有某状态的申请记录
     *
     * @param params
     * @return
     */
    List<ConferenceDetailDTO02> selectConferenceInfoByConventionerId(Map<String, Object> params);

}